class CDB:
    def __init__(self):
        self.data = {}  # 存储广播的数据，格式可以是 {entry_number: value}
        self.busy = False  # 标志是否有正在广播的数据
        self.predictions = {}  # 存储预测的结果，格式为 {entry_number: predicted_value}

    def broadcast(self, entry_number, value):
        """
        广播数据到CDB。
        :param entry_number: 条目编号。
        :param value: 要广播的值。
        """
        # 如果有预测，且预测正确，则直接使用预测值
        if entry_number in self.predictions:
            predicted_value = self.predictions[entry_number]
            if predicted_value == value:
                print(f"Prediction successful for entry {entry_number}. Broadcasting predicted value.")
                value = predicted_value  # 使用预测的值
            else:
                print(f"Prediction failed for entry {entry_number}. Broadcasting actual value.")
        
        # 将广播值添加到数据中
        self.data[entry_number] = value
        self.busy = True

    def set_prediction(self, entry_number, predicted_value):
        """
        设置预测结果。
        :param entry_number: 条目编号。
        :param predicted_value: 预测的值。
        """
        self.predictions[entry_number] = predicted_value
        print(f"Prediction set for entry {entry_number}: {predicted_value}")

    def clear(self):
        """
        清空CDB状态。
        """
        self.data.clear()
        self.busy = False
        self.clear_predictions()

    def clear_predictions(self):
        """
        清空预测数据。
        """
        self.predictions.clear()
        print("Predictions cleared.")

